package Algoritmos;

public class RadixSort {
	
	
	/**
	 * 
	 * @param A Arreglo con n numeros
	 * @param d Cantidad de digitos de los numeros almacenados en A
	 */	
	public static void radixSort(int[] A, int d){
		int i;
		int[] B = new int[A.length];
		int exp = 1;
		int max = (int) Math.pow(10,d);
		
		while(exp<=max){
			int[] bucket=new int[10];
			for(i=0;i<A.length;i++)
				bucket[A[i]/exp%10]++;
			
			for(i=1;i<10;i++)
				bucket[i]+=bucket[i-1];
			
			for(i=A.length-1;i>=0;i--)
				B[--bucket[A[i]/exp%10]]=A[i];
			
			for(i=0;i<A.length;i++)
				A[i]=B[i];
			
			exp=exp*10;
		}
	}
}
